/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import muhnes.sizoo.dal.SuperfamiliaDao;
import muhnes.sizoo.dal.SuperfamiliaDaoImpl;
import muhnes.sizoo.modelo.Superfamilia;
import muhnes.sizoo.dal.OrdenDao;
import muhnes.sizoo.dal.OrdenDaoImpl;
import muhnes.sizoo.modelo.Orden;
/**
 *
 * @author Ricardo Orellana
 */
@ManagedBean(name = "superfamiliaBean")
@ViewScoped
public class SuperfamiliaBean implements Serializable {
    
    private Superfamilia superfamilia;
    private List<Superfamilia> listaSuperfamilia;
    private List< SelectItem > listaOrden;
    
    public SuperfamiliaBean() {
        SuperfamiliaDao dao = new SuperfamiliaDaoImpl();
        superfamilia = new Superfamilia();
        listaSuperfamilia = dao.buscarTodos();
    }

    public Superfamilia getSuperfamilia() {
        return superfamilia;
    }

    public void setSuperfamilia(Superfamilia superfamilia) {
        this.superfamilia = superfamilia;
    }
    
    public List<Superfamilia> getListaSuperfamilia() {
        if( listaSuperfamilia == null ) {
            SuperfamiliaDao dao = new SuperfamiliaDaoImpl();
            listaSuperfamilia = dao.buscarTodos();
        }
        return listaSuperfamilia;
    }

    public void setListaSuperfamilia(List<Superfamilia> listaSuperfamilia) {
        this.listaSuperfamilia = listaSuperfamilia;
    }   
    
     public void prepararAdicion( ActionEvent event  ){
        superfamilia = new Superfamilia();
    }
    
    public void prepararModificacion( Superfamilia superfamilia ){
        this.superfamilia = superfamilia;
    }
    
    public void prepararEliminacion( Superfamilia superfamilia ){
        this.superfamilia = superfamilia;
    }
    
    public void agregarSuperfamilia( ActionEvent event ){
        SuperfamiliaDaoImpl dao = new SuperfamiliaDaoImpl();
        superfamilia.setHabilitado( Boolean.TRUE );
        dao.guardar( superfamilia );
        recrearLista();
    }
    
     public void actualizarSuperfamilia( ActionEvent event ){
        SuperfamiliaDaoImpl dao = new SuperfamiliaDaoImpl();
        dao.actualizar( superfamilia );
        recrearLista();
    }
    
    public void eliminarSuperfamilia( ActionEvent event ){
        SuperfamiliaDaoImpl dao = new SuperfamiliaDaoImpl();
        dao.eliminar( superfamilia );
        recrearLista();
    }
    
    
    public List< SelectItem > getListaOrden() {
        if( listaOrden == null ) {
            listaOrden = new ArrayList< SelectItem >();
            OrdenDao dao = new OrdenDaoImpl();
            for( Orden orden : dao.buscarTodos() ) {
                SelectItem item = new SelectItem( orden, orden.getNombre() + " " + orden.getSuborden());
                listaOrden.add( item );
            }
        }
        return listaOrden;
    }
    
    void recrearLista() {
        listaSuperfamilia = null;
    }
    
}
